Hosted services are becoming increasingly common, where various applications service a large number of customers on shared hardware (referred to as a multi-tenant system). Hosted services may provide a common type of service to many clients or multiple services to a single client. As such hosted services can be fairly complex systems. A representative example of complex hosted service systems is a web based Customer Relationship Management (CRM) service.
CRM solutions provide tools and capabilities needed to create and maintain a clear picture of customers, from first contact through purchase and post-sales, typically in a hosted computer application environment. For complex tenants, a CRM system may provide features and capabilities to help improve the way sales and marketing organizations target new customers, manage marketing campaigns, and drive sales activities. CRM systems may include many components, hardware and software, utilized individually or in a shared manner by users internal or external to the tenant.
Complex systems such as hosted CRM services need to perform a series of operations in response to client requests. These operations can be synchronous or asynchronous, can have order dependencies, and can be implemented by disparate parties. One challenge in implementing such a system is managing complexity of the system, especially as third party providers add operations. This challenge may be exacerbated in Software as a Service (SaaS) applications, where third party extensions are not fully trusted by the service provider.